import threading, time
def run():
    time.sleep(2)
    print('当前线程的名字是： ', threading.current_thread().name)
    time.sleep(2)
if __name__ == '__main__':
    start_time = time.time()
    print('这是主线程：', threading.current_thread().name)
    thread_list = []  # 创建5个子线程并启动
    for i in range(5):
        t = threading.Thread(target=run)
        thread_list.append(t)
    for t in thread_list:
        t.setDaemon(True)  # 设置成主程序的守护线程,当主程序停止时,此程序也会停止,默认false,即会继续执行
        t.start()
    # join:线程同步,即主线程完成后,会进入阻塞状态,等待join的子线程完成,主线程再结束
    # timeout参数: 当此线程是守护线程时,会等待timeout的时间将会杀死该子线程，最后退出,不管子线程是否执行完
    #             非守护线程时,会等待timeout时间然后结束,子线程会继续执行,完成后再退出
    #  注意: 如果有10个线程,主线程的等待时间是所有线程timeout的累加和
    for t in thread_list:
        t.join()
    print('主线程结束！', threading.current_thread().name)
    print('一共用时：', time.time()-start_time)